import sys
import pickle


### fonctions
def afficheTitre():
	print("Bonjour sur le gestionnaire de contacts :")



## les personnes
class Personne:
	#nom
	#telephonne
	def __init__(self, nom="nom inconnu",telephone="pas de numero"):
		self.nom=nom
		self.telephone=telephone
		
	def toString(self):
		print ("nom" , self.getNom() , "numero" , self.getTelephone())
		return "nom : " + self.getNom() + " - numero : " + self.getTelephone()
		
	def getNom(self):
		return self.nom
	
	def getTelephone(self):
		return self.telephone
	
	def lenTelephone(self):
		return len(self.telephone)



## les classes
class Menu:
	def __init__(self):
		# le tableau des contacts
		self.contacts = []

	def listerLesContacts(self):
		result = "\n\n--- Liste des contacts :\n"
		for personne in self.contacts :
			result += personne.toString()+"\n"
		return result

	def ajouterUnContact(self):
		nom = raw_input(' Le nom de la personone a ajouter : ')[:-1]
		tel = raw_input(' Le numero de la personone a ajouter : ')[:-1]
		self.contacts.append(Personne(nom, tel)) #nom[:-1] Everything except the last character : \r

	
	def supprimerUnContact(self):
		result = ""
		nomPers = raw_input("\n\n--- Nom de la personne a supprimer  : ")[:-1]
		for index, pers in enumerate(self.contacts):
			if (pers.getNom()== nomPers) :
				self.contacts.pop(index)
				result +=nomPers +" a ete supprimmer"
				break
		return result
	
	def supprimerTousLesContacts(self):
		result = "--- Suppession de tous les contacts :\n"
		self.contacts = []
		return result
	
	def sauvegarderContacts(self):
		result = "--- Sauvegarder dans un fichier :\n"
		f=open("./save", "w")
		pickle.dump(self.contacts, f)
		f.close()
		return result
	
	def chargerContacts(self):
		result = "--- Charger a partir d\'un fichier  :\n"
		f=open("./save", "r")
		self.contacts = pickle.load(f)
		f.close()
		return result
		
	def lancerBoucles(self):
		while 1==1 :
			self.afficherLeMenu()
			try: choix = int(raw_input(" Choix  : "))
			except: choix = -1
			if    choix == 1: 
				print self.listerLesContacts()
			elif choix == 2: 
				print self.ajouterUnContact()
			elif choix == 3:
				print self.supprimerUnContact()
			elif choix == 4: 
				print self.supprimerTousLesContacts()
			elif choix == 5: 
				print self.sauvegarderContacts()
			elif choix == 6: 
				print self.chargerContacts()
			elif choix == 0: 
				print "fin ..."
				break
			else :
				print 'mauvais choix ... '

	def afficherLeMenu(self):
		print("\n 1: Afficher les contacts\n 2: Ajouter un contact\n 3: Supprimer un contact\n 4: Supprimer tous les contacts\n 5: Sauvegarder dans un fichier :\n 6: Charger a partir d\'un fichier\n 0: Quitter\n")
	


def commenceprogramme():
	# titre
	afficheTitre()
	# menu
	prog = Menu() # Creation de l'instance
	prog.lancerBoucles()


##########
## MAIN ##
##########

if __name__=="__main__" :
	commenceprogramme()

